package com.xlf.service.base.pojo.vo;

import com.xlf.common.core.pojo.vo.UserVO;
import com.xlf.pojo.base.Difficulty;
import com.xlf.pojo.base.Tag;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * @Author xlf 2734029211@qq.com
 * @Date 2023/10/4 17:28
 * @Description: TODO
 * @Version 1.0
 */
@Data
public class ProblemDetailVO {


    private Long id;

    /**
     * 问题的自定义ID 例如（HOJ-1000）
     */
    private String problemId;

    /**
     *
     */
    private String title;

    /**
     * 外键，作者
     */
    private Long authorId;

    /**
     * 0为ACM,1为OI
     */
    private Integer type;

    /**
     * 单位ms
     */
    private Integer timeLimit;

    /**
     * 单位kb
     */
    private Integer memoryLimit;

    /**
     * 单位mb
     */
    private Integer stackLimit;

    /**
     *
     */
    private String description;

    /**
     *
     */
    private String input;

    /**
     *
     */
    private String output;

    /**
     * 题面样例
     */
    private String examples;

    /**
     * 是否为vj判题
     */
    private Integer isRemote;

    /**
     *
     */
    private String source;

    /**
     * 外键，难度Id
     */
    private Long difficultyId;

    /**
     * 外键，题库Id
     */
    private Long problemTypeId;


    /**
     * 默认为1公开，2为私有，3为比赛题目
     */
    private Integer auth;

    /**
     * 当该题目为io题目时的分数
     */
    private Integer ioScore;

    /**
     * 该题目对应的相关提交代码，用户是否可用分享
     */
    private Integer codeShare;

    /**
     * 题目评测模式,default、spj、interactive
     */
    private String judgeMode;

    /**
     * 题目样例评测模式,default,subtask_lowest,subtask_average
     */
    private String judgeCaseMode;

    /**
     * 是否默认去除用户代码的文末空格
     */
    private Integer isRemoveEndBlank;

    /**
     * 是否默认开启该题目的测试样例结果查看
     */
    private Integer openCaseResult;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 提示
     */
    private String prompt;

    /**
     * 难度
     */
    private Difficulty difficulty;

    /**
     * 标签
     */
    private List<Tag> tagList;

    /**
     * 支持的语言 key:语言名称
     */
    private Map<String,LanguageVO> languageVOS;

    /**
     * 作者
     */
    private UserVO author;
}
